package com.lqq.designPattern.bulider_pattern.singleton.demo8;

import java.lang.reflect.Constructor;

/**
 * 反射破坏单例模式（除了枚举不能破坏）
 */
public class Client {
    public static void main(String[] args) throws Exception{
        //1.获取Singleton字节码兑现
        Class clazz = Singleton.class;
        //2.获取无参的构造方法
        Constructor cons = clazz.getDeclaredConstructor();
        //3.取消访问检查，因为Singleton的构造方法是私有的
        cons.setAccessible(true);
        //4.创建Singleton对象
        Singleton instance1 = (Singleton) cons.newInstance();
        System.out.println(instance1);

        Singleton instance2 = (Singleton) cons.newInstance();
        System.out.println(instance2);
        //5.比较是不是同一个对象
        System.out.println("是否为同一个对象：" + (instance1 == instance2));
    }

}
